package com.neuedu.collectionsdemo;

import java.util.*;

public class CollectionTestDriver {
    public static void main(String[] args) {

        test05();
    }


    /**
     * 集合工具类：Comparator接口（匿名内部类方式）
     */
    private static void test05() {
        //创建一个List数组
        List<Monitor> list0 = new ArrayList<>();
        //添加元素
        list0.add(new Monitor("zhangsan","15001",70));
        list0.add(new Monitor("lisi","15002",60));
        list0.add(new Monitor("wangwu","15003",90));
        //排序算法
        System.out.println("使用集合工具类的sort方法进行排序：");
        Collections.sort(list0, new Comparator<Monitor>() {
            @Override
            public int compare(Monitor o1, Monitor o2) {
                //默认返回值
                int iVal=0;
                if (o1!=null&&o2!=null){
                    //比较o1和o2的大小
                    if (o1.getStuScore()>o2.getStuScore()){
                        iVal=1;
                    }else if (o1.getStuScore()<o2.getStuScore()){
                        iVal=-1;
                    }
                }
                return iVal*-1;
            }
        });
        printList(list0);


    }




    /**
     * 集合工具类：Comparator接口
     */
    private static void test04() {
        //创建一个List数组
        List<Monitor> list0 = new ArrayList<>();
        //添加元素
        list0.add(new Monitor("zhangsan","15001",70));
        list0.add(new Monitor("lisi","15002",60));
        list0.add(new Monitor("wangwu","15003",90));
        //排序算法
        System.out.println("使用集合工具类的sort方法进行排序：");
        Collections.sort(list0,new MonitorComparator());
        printList(list0);


    }



    /**
     * 集合工具类：Comparable接口和TreeSet
     */
    private static void test03() {
        //创建一个TreeSet对象
        Set<Teacher> set0=new TreeSet<>();
        //创建一个Teacher对象
        Teacher tea0=new Teacher();
        set0.add(tea0);
        Teacher tea1=new Teacher();
        set0.add(tea1);
        for (Teacher t:set0) {
            System.out.println("  "+t);
            
        }
        

    }




    /**
     * 集合工具类：Comparable接口
     */
    private static void test02() {
        //创建一个List数组
        List<Student> list0 = new ArrayList<>();
        //添加元素
        list0.add(new Student("zhangsan","15001",70));
        list0.add(new Student("lisi","15002",60));
        list0.add(new Student("wangwu","15003",90));
        //排序算法
        System.out.println("使用集合工具类的sort方法进行排序：");
        Collections.sort(list0);
        printList(list0);


    }



    /**
     * 集合工具类：Collections
     */
    private static void test01(){
       //创建一个List数组
        List<String> list0=new ArrayList<>();
        //添加元素
        list0.add("zhangsan");
        list0.add("lisi");
        list0.add("wangwu");
        list0.add("zhaoliu");
        //打印原始的list元素内容
        System.out.println("List内的初始化元素内容为：");
        printList(list0);
        //max方法
        String strMax=Collections.max(list0);
        System.out.println("List内元素最大值为："+strMax);
        //随机打乱顺序
        Collections.shuffle(list0);//采用的是按引用传参
        System.out.println("List打乱顺序之后：");
        printList(list0);
        //排序算法
        System.out.println("使用集合工具类的sort方法进行排序：");
        Collections.sort(list0);
        printList(list0);
        //折半查找
        int index=Collections.binarySearch(list0,"lisi");

        System.out.println("折半查找结果："+(index>-1?"找到，下标为："+index:"找不到"));


    }

    /**
     * 打印List中的元素内容
     * @param list  被打印的list对象
     */
    private static void printList(List list){
            if (list!=null){
                for (Object str:list) {
                    System.out.println("   "+str);
                }
                System.out.println();
            }
    }
}
